import { ElMessage } from 'element-plus'

// 处理所有后端返回的数据
export function processReturn(res) {
  // code 0:成功 1:错误 2:后端报错
  let { code, msg, data } = res.data;
  if (code) {
    ElMessage.error(msg);
    return;
  }
  if (msg) {
    ElMessage.success(msg);
  }
  return data;
}

// 判断一个字符串是否包含另外一个字符串
export function isContainStr(str1, str2) {
  return str2.indexOf(str1) >= 0;
}

/**
 * 屏蔽词
 * @param {string} text 文本
 */
export function parseText(text) {
  return text;
}

/**
 * 判断是否URL
 * @param {string} text 文本
 */
export function isUrl(text) {
  // 解析网址
  const UrlReg = new RegExp(/http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/);
  return UrlReg.test(text);
}

/**
 * 消息时间格式化
 * @param {number} time
 */
export function formatTime(time) {
  // 获取当前时间戳
  const now = new Date().getTime();
  const date = new Date(time);
  
  // 获取今天和昨天的开始时间戳
  const today = new Date(new Date().setHours(0, 0, 0, 0)).getTime();
  const yesterday = today - 24 * 60 * 60 * 1000;
  
  // 格式化函数
  const format = (date, fmt) => {
    const options = {
      'M+': date.getMonth() + 1,
      'D+': date.getDate(),
      'H+': date.getHours(),
      'm+': date.getMinutes(),
      's+': date.getSeconds()
    };
    
    for (let k in options) {
      const val = options[k].toString();
      fmt = fmt.replace(new RegExp(`(${k})`), val.padStart(2, '0'));
    }
    return fmt;
  };

  // 大于昨天
  if (time < yesterday) {
    return format(date, 'M/D HH:mm');
  }
  // 昨天
  if (time < today) {
    return '昨天 ' + format(date, 'HH:mm');
  }
  // 大于五分钟不显示秒
  if (now > time + 300000) {
    return format(date, 'HH:mm');
  }
  return format(date, 'HH:mm:ss');
}

/**
 * 群名/用户名校验
 * @param {string} name
 * @returns {boolean}
 */
export function nameVerify(name) {
  let nameReg = /^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$/;
  if (name.length === 0) {
    ElMessage.error('请输入名字');
    return false;
  }
  if (!nameReg.test(name)) {
    ElMessage.error('名字只含有汉字、字母、数字和下划线 不能以下划线开头和结尾');
    return false;
  }
  if (name.length > 9) {
    ElMessage.error('名字太长');
    return false;
  }
  return true;
}

/**
 * 密码校验
 * @param {string} password
 * @returns {boolean}
 */
export function passwordVerify(password) {
  const passwordReg = /^\w+$/gis;
  if (password.length === 0) {
    ElMessage.error('请输入密码');
    return false;
  }
  if (!passwordReg.test(password)) {
    ElMessage.error('密码只含有字母、数字和下划线');
    return false;
  }
  if (password.length > 9) {
    ElMessage.error('密码太长');
    return false;
  }
  return true;
}